
package com.kanjian.music.util;

import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

import com.android.volley.NetworkError;
import com.android.volley.ServerError;
import com.kanjian.music.KanjianApplication;
import com.kanjian.music.R;
import com.kanjian.music.activity.MainActivity;
import com.kanjian.music.constants.SharedPreferenceKeyConstants;

/**
 * 通用工具类
 * 
 * @author xuyanjun@kanjian.com
 */
public class CommonUtil {

    // 创建屏幕快捷方式
    public static void addShortCut(Context context) {
        Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.app_name));
        shortcut.putExtra("duplicate", false);
        Intent intent = new Intent(context, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.setAction(Intent.ACTION_MAIN);
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                Intent.ShortcutIconResource.fromContext(context, R.drawable.ic_launcher));
        context.sendBroadcast(shortcut);
    }

    // 判断程序是否第一次打开
    public static boolean isFirstOpen() {
        return SharedPreferenceUtil.getBoolean(SharedPreferenceKeyConstants.SPKEY_IS_FIRST_OPEN,
                true);
    }

    // 关闭程序时设置为非首次打开
    public static void disableFirstOpen() {
        SharedPreferenceUtil.put(SharedPreferenceKeyConstants.SPKEY_IS_FIRST_OPEN, false);
    }

    // 从sharedpreference获取sessionId
    public static String getSessionId() {
        return SharedPreferenceUtil.getString(SharedPreferenceKeyConstants.SPKEY_SID, null);
    }

    // 保存sessionId到sharedpreference
    public static boolean saveSessionId(String sid) {
        if (sid != null) {
            KanjianApplication.SID = sid;
            return SharedPreferenceUtil.put(SharedPreferenceKeyConstants.SPKEY_SID, sid);
        }
        return false;
    }
    
    // 网络请求失败时 通过ErrorCode Toast提示用户
    public static void processNetWorkError(Context context, Exception e) {
        if (e != null) {
            // switch (e.networkResponse.statusCode) {
            //
            // }
            if (e instanceof ServerError) {
                Toast.makeText(context, "服务器连接失败!", Toast.LENGTH_LONG).show();
            } else if (e instanceof NetworkError) {
                Toast.makeText(context, "网络链接错误!", Toast.LENGTH_LONG).show();
            }
        }
    }

    // 根据接口定义的errorcode提示用户
    public static void processErrorCode(int errorCode) {
        switch (errorCode) {
            case 10000:
                // 联系开发者，代码错误
                break;
            case 10001:
                // 缺少必要参数
                break;
            case 10002:
                // 用户未登录
                break;
            case 10003:
                // 没有更多结果
                break;
            case 10004:
                // 用户不存在
                Toast.makeText(KanjianApplication.getContext(), "用户不存在", Toast.LENGTH_LONG).show();
                break;
            case 10005:
                // 目标不存在
                break;
            case 10006:
                break;
            case 10007:
                break;
            case 10008:
                break;
            case 10009:
                break;
            case 10010:
                // 用户名已存在
                break;
            case 10011:
                break;

        }
    }

}
